package com.ditian.http.apienc;

import com.alibaba.fastjson.JSONObject;
import com.ditian.code.ErrorMessage;
import com.ditian.http.Key;
import com.ditian.http.Response;
import com.ditian.http.api.CardApi;
import com.ditian.ret.card.DriverLicenseRet;
import com.ditian.ret.card.IDCardRet;
import com.ditian.ret.card.VehicleLicenseRet;

public class CardApiEnc {

	private static CardApi api = new CardApi(Key.API_KEY, Key.API_SECRET);

	/**
	 * 身份证检测
	 * 
	 * @param imageUrl
	 *            身份证图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地身份证图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            身份证图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @param legality
	 *            返回身份证照片合法性检查结果，值只取“0”或“1”。“1”：返回； “0”：不返回
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
	public static IDCardRet ocrIDcard(String imageUrl, byte[] fileByte,
			String image_base64, int legality) {
		try {
			Response response = api.ocrIDcard(imageUrl, fileByte, image_base64,
					legality);
			if (response != null) {
				String json = response.getJson();
				int status = response.getStatus();
				IDCardRet ret = JSONObject.parseObject(json, IDCardRet.class);
				if (status != 200 && ret != null) {
					ret.setError(ErrorMessage.messageOf(status,
							ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 机动车驾驶证检测
	 * 
	 * @param imageUrl
	 *            身份证图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地身份证图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            身份证图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
	public static DriverLicenseRet ocrDriverLicense(String imageUrl,
			byte[] fileByte, String image_base64) {
		try {
			Response response = api.ocrDriverLicense(imageUrl, fileByte,
					image_base64);
			if (response != null) {
				String json = response.getJson();
				int status = response.getStatus();
				DriverLicenseRet ret = JSONObject.parseObject(json,
						DriverLicenseRet.class);
				if (status != 200 && ret != null) {
					ret.setError(ErrorMessage.messageOf(status,
							ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	/**
	 * 机动车行驶证检测
	 * 
	 * @param imageUrl
	 *            身份证图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地身份证图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            身份证图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
	public static VehicleLicenseRet ocrVehicleLicense(String imageUrl,
			byte[] fileByte, String image_base64) {
		try {
			Response response = api.ocrVehicleLicense(imageUrl, fileByte,
					image_base64);
			if (response != null) {
				String json = response.getJson();
				int status = response.getStatus();
				VehicleLicenseRet ret = JSONObject.parseObject(json,
						VehicleLicenseRet.class);
				if (status != 200 && ret != null) {
					ret.setError(ErrorMessage.messageOf(status,
							ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}
